/*
 * Copyright (c) 2022  by Junzhao
 * THIS FILE IS PART OF JAVASE Song Huongkang PROJECT
 * All Rights Reserved.
 */

package 日期与时间.JDK8之前;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @description SimpleDateFormat
 * 对Date类的格式化与解析
 *  Date类的API不易于国际化，大部分被废弃了，java.text.SimpleDateFormat
 * 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
 *  它允许进行格式化：日期文本、解析：文本日期
 *  格式化：
 *  SimpleDateFormat() ：默认的模式和语言环境创建对象
 *  public SimpleDateFormat(String pattern)：该构造方法可以用参数pattern
 *      指定的格式创建一个对象，该对象调用：
 *  public String format(Date date)：方法格式化时间对象date
 *  解析：
 *  public Date parse(String source)：从给定字符串的开始解析文本，以生成
 * 一个日期。
 * @author 俊昭
 * @date 2022/4/17
*/
public class SimpleDateFormatTest {
    @Test
    public void t01() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat();// 默认的模式和语言环境创建对象
        Date d1 = new Date();
        System.out.println(d1);// Sun Apr 17 11:20:47 CST 2022

        // public SimpleDateFormat(String pattern)
        // 将Date 格式化 为日期/时间字符串。
        System.out.println(sdf.format(d1));// 22-4-17 上午11:20

        // Date parse(String source)
        // 解析
        // 从给定字符串的开头解析文本以生成日期。该方法不能使用给定字符串的整个文本。
        String str = "2022-4-17 上午11:12";
        Date d2 = sdf.parse(str);
        System.out.println(d2);// Sun Apr 17 11:12:00 CST 2022

//        SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");
//        System.out.println(sdf0.format(d1));//02022.四月.17 公元 11:29 上午

        SimpleDateFormat sdf0 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(sdf0.format(d1));// 2022-04-17 11:31:53

        String str0 = "1999-09-09 09:09:09";
        Date d3 = sdf0.parse(str0);
        System.out.println(d3);// Thu Sep 09 09:09:09 CST 1999

    }
    @Test
    public void t2() throws ParseException {
        // 将字符串"2022-09-08"转化为Date对象
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = s.parse("2022-09-08");
        System.out.println(d1); // Thu Sep 08 00:00:00 CST 2022

//        SimpleDateFormat s1 = new SimpleDateFormat("dd");

        Date birthday =s.parse("2002-08-07");
        Date today = s.parse("2022-04-17");
        long alive = today.getTime()-birthday.getTime();

//        Date aliveTime = new Date(alive);
//        System.out.println(s1.format(aliveTime));
        System.out.println(alive / (24 * 60 * 60 * 1000));// 7193

    }
}
